#ifndef LSTTIMER_H
#define LSTTIMER_H



 #include<iostream>
 #include<time.h>
 #include<arpa/inet.h>
 #include"http_connect.h"

/*
每一个连接里面都有一个定时器
*/

//每个http_connext都有一个定时器

class util_timer{

public:
    util_timer():prev(NULL),next(NULL){}

public:
    time_t expire; //任务超时时间
    util_timer* prev;
    util_timer* next;
    http_connect* user_data = NULL;
    void (*cb_func)(http_connect*); //超时后，执行回调函数
 };

//升序排列，带有头节点和尾节点
 //主线程维持一个双向链表类
class sort_time_lst{
public:
    sort_time_lst();
    ~sort_time_lst();
    void add_timer(util_timer* timer); //添加计时器到链表中
    void adjust_timer(util_timer* timer); //重新对链表的顺序进行排序
    void del_timer(util_timer* timer); // 删除链表中的某个计时器
    void tick();

private:
    void add_timer(util_timer* timer,util_timer* head);
    util_timer* head;
    util_timer* tail;

 };



#endif